// 引入请求的基础url
import baseurl from './config.js';
//引入全局方法
import common from "@/utils/common.js"
// 全局请求封装
export default (url, method, params) => {
	const token = '------';
	// 处理 token 不存在时的逻辑
	// ...

	// 显示加载
	uni.showLoading({
		title: "加载中"
	});
	uni.showNavigationBarLoading();

	return new Promise((resolve, reject) => {
		// 发起请求
		uni.request({
			url: baseurl.api + url,
			method: method,
			header: {
				'content-type': 'application/json',
				'Access-Token': token
			},
			data: {
				...params
			},
			success(res) {
				// const {
				// 	解构出想要的数据
				// } = res.data;
				// 可以统一处理后端返回的错误码，例如 token 过期等
				// ...

				// 无错误码，resolve成功的数据
				resolve(res.data);

				const rawData = res.data;
				const message = res.data.message
				if (res.statusCode >= 200 && res.statusCode < 300) {
					// 判断跟后端约定好的成功标识
					if (rawData.code !== 0) {
						common.showToast(message, 'none');
					}
					resolve(rawData);
				} else if (res.statusCode === 401) {
					// token 失效处理
					reject(res);
				} else {
					switch (res.statusCode) {
						case 404:
							common.showToast('请求资源不存在');
							break;
						case 500:
							common.showToast('服务器错误');
							break;
						case 502:
							common.showToast('找不到对应服务器');
							break;
						default:
							common.showToast(message || '请求异常');
							break;
					}
					reject(res);
				}
			},
			fail(err) {
				if (err.errMsg.indexOf('timeout') > -1) reject({
					errMsg: '请求超时！'
				})
				else if (err.errMsg.indexOf('request:fail') > -1) reject({
					errMsg: '网络异常1！'
				})
				else reject(err)
			},
			complete() {
				// 加载状态 -- 隐藏
				uni.hideLoading();
				uni.hideNavigationBarLoading();
			}
		});
	});
};